]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
popupMenu: don't handle key presses directly if there are modifiers
authorRay Strode <rstrode@redhat.com>
Wed, 26 Oct 2016 14:46:21 +0000 (10:46 -0400)
committerRay Strode <rstrode@redhat.com>
Mon, 7 Nov 2016 19:01:23 +0000 (14:01 -0500)
commit 1d58ea25ab6f0472bdeffc9170ece37d5dd71e64 changed the
popupMenu code to handle key presses on source actors directly.

This fixed keynav into the session gear menu at the login screen.

Unfortunately, it also causes spurious pop ups if a modifier happens
to be held down.

This commit checks for modifiers and short circuits the up front
key handling if any are found.

https://bugzilla.gnome.org/show_bug.cgi?id=740043

js/ui/popupMenu.js

index 0090aa3b2e21ffb0a7765e5ad8632d515cab0b9d..52a58d6b85c912e7fe7695db1e076da937b51b9f 100644 (file)
@@ -783,6 +783,16 @@ const PopupMenu = new Lang.Class({
                 break;
         }
 
+        let state = event.get_state();
+
+        // if user has a modifier down (except capslock)
+        // then don't handle the key press here
+        state &= ~Clutter.ModifierType.LOCK_MASK;
+        state &= Clutter.ModifierType.MODIFIER_MASK;
+
+        if (state)
+            return Clutter.EVENT_PROPAGATE;
+
         let symbol = event.get_key_symbol();
         if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) {
             this.toggle();